#pragma once

#include "Globals.h"

typedef enum 
{
    EASY = 0,
    MEDIUM = 1,
    HARD = 2,
} DifficultyType;

typedef enum 
{
    LOW = 0,
    MODERATE = 1,
    HIGH = 2,
} GraphicDetailType;

/*!
 * \class GameOptions
 * \brief 
 */
class GameOptions
{
///////////////////////////////////////////////////////////////////////////////
// Attribute definition
///////////////////////////////////////////////////////////////////////////////
private:
    DifficultyType _difficulty;
    GraphicDetailType _graphicDetail;
    BOOL _musicEnabled;
    BOOL _fxEnabled;

///////////////////////////////////////////////////////////////////////////////
// Method definition
///////////////////////////////////////////////////////////////////////////////
public:
    // Constructors and Destructors
    GameOptions(void);
    GameOptions(const DifficultyType difficulty, const GraphicDetailType graphicDetail,
        const BOOL musicEnabled, const BOOL fxEnabled);
    virtual ~GameOptions(void);

    // Getters
    const DifficultyType difficulty(void);
    const GraphicDetailType graphicDetail(void);
    const BOOL isMusicEnabled(void);
    const BOOL isFxEnabled(void);

    // Setters
    void setDifficulty(const DifficultyType difficulty);
    void setGraphicDetail(const GraphicDetailType graphicDetail);
    void setMusicEnabled(const BOOL musicEnabled);
    void setFxEnabled(const BOOL fxEnabled);

};
